fix(assessors): support project-named directories and test-only repos in standard_layout check#322
Conversation
… in standard_layout Enhances StandardLayoutAssessor to recognize multiple valid Python project structures instead of rigidly requiring src/: - Project-named directories (e.g., pandas/pandas/) now pass the check - Test-only repositories now receive NOT_APPLICABLE instead of failing - Parses pyproject.toml for project name (PEP 621 and Poetry formats) - Falls back to detecting any root directory with __init__.py - Adds blocklist to exclude non-source directories (tests, docs, utils, etc.) - Updates remediation to present both src/ and flat layout as valid options Fixes ambient-code#246 Fixes ambient-code#305 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
📈 Test Coverage Report
Coverage calculated from unit tests only |
AgentReady Code Review — PR #322Scope: StandardLayoutAssessor — support project-named directories and test-only repos SummaryThis PR correctly identifies two real shortcomings in the original StandardLayoutAssessor and the general approach is sound. The three-strategy source detection and context-aware remediation are meaningful improvements. However, there are several correctness and reliability issues that need addressing before merge. IssuesCritical1. setup.cfg is not a test-only indicator (structure.py:262) setup.cfg is used across nearly all Python projects for mypy, flake8, coverage.py, setuptools, and many other tools. Including it in test_indicators will incorrectly classify regular Python projects that lack a src/ layout as test-only repos — returning not_applicable when they should fail and receive remediation guidance. tox.ini is similarly risky — it is used by many non-test-only projects for linting, building, and docs. At minimum remove setup.cfg; consider also removing tox.ini. 2. Non-deterministic directory ordering in Strategy 3 (structure.py:214) Path.iterdir() returns entries in filesystem-dependent order (hash-randomized on some filesystems, inode order on others). The first qualifying directory found becomes the reported source directory, producing inconsistent behaviour across runs and platforms. Fix: Significant3. Strategy 3 fallback is too permissive (structure.py:204-220) Any root-level directory with __init__.py not in _NON_SOURCE_DIRS qualifies as a source directory. This will match migrations/, alembic/, config/, middleware/, settings/, celery/ etc. — none of which are package source directories. A project with migrations/__init__.py and tests/ but no src/ and no pyproject.toml would pass when it should fail. Consider whether Strategy 3 should exist at all without a pyproject.toml. 4. Name-based test-only detection is over-broad (structure.py:272) Using Use word-boundary matching instead: import re
name_suggests_tests = bool(
re.search(r"(^\|[-_.])(test\|tests\|testing\|spec\|specs)($\|[-_.])", repository.name.lower())
)5. _NON_SOURCE_DIRS is missing common entries (structure.py:14) The blocklist omits migrations, alembic, config, settings, middleware, static, assets, data, ci, resources, locale, i18n. These are common root-level directories with __init__.py that Strategy 3 would pick up as false-positive source directories. Minor6. Redundant has_tests re-check in _is_test_only_repository (structure.py:249) The caller only invokes this method when 7. Empty strings in commands list create blank entries (structure.py:320) Empty strings in the commands list render as blank command lines in the HTML report. Use a comment line or handle spacing in the template instead. Positives
AgentReady Attribute Compliance
Score Impact AssessmentTest-only repo case (not_applicable): Repos penalised for a non-applicable attribute will have it excluded from their denominator. This is the correct behaviour and improves score accuracy. Project-named directory case: Repos using flat layout (numpy/pandas style) that were scoring 50/100 on this attribute will now score 100/100. This directly fixes the reported false negatives. standard_layout carries 10% weight (Tier 1 Essential). A 50 to 100 correction on this attribute translates to a +5 point boost to the overall score for affected repos. RecommendationRequest changes. The core approach is correct and the bugs being fixed are real. The critical issues (setup.cfg false positive, non-deterministic iteration, over-broad name matching, Strategy 3 false positives) need to be addressed before this is safe to merge. The risk is that the fix introduces a new class of false positives that silently suppress remediation guidance for repos that need it. |
AgentReady Code Review — PR #322Scope: SummaryThis PR correctly identifies two real shortcomings in the original IssuesCritical1.
2. Non-deterministic directory ordering in Strategy 3 (
Fix: Significant3. Strategy 3 fallback is too permissive ( Any root-level directory with Consider whether Strategy 3 should exist at all without a 4. Name-based test-only detection is over-broad ( Using Use word-boundary matching: name_suggests_tests = bool(
re.search(r"(^|[-_.])(test|tests|testing|spec|specs)($|[-_.])", repository.name.lower())
)5. The blocklist omits Minor6. Redundant The caller only invokes this method when 7. Empty strings in Empty strings in the commands list render as blank lines in the HTML report. Use a comment line instead. Positives
AgentReady Attribute Compliance
Score Impact AssessmentTest-only repo case ( Project-named directory case: Repos using flat layout (numpy/pandas style) that were scoring 50/100 will now score 100/100. Directly fixes reported false negatives.
RecommendationRequest changes. The core approach is correct and the bugs being fixed are real. The critical issues ( |
Changes based on code review: Critical: - Remove setup.cfg from test_indicators (false positive risk) - Sort directory iteration for deterministic cross-platform behavior Significant: - Limit Strategy 3 (fallback detection) to repos with pyproject.toml - Use word-boundary regex for test-only repo name detection - Expand _NON_SOURCE_DIRS blocklist with migrations, config, etc. Minor: - Remove redundant has_tests check (caller already verifies) - Replace empty strings in commands with comment separators Updated test to expect failure for project-named directory without pyproject.toml, matching the new stricter detection behavior. All 16 tests pass. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
AgentReady Code Review — PR #322Attribute: SummaryThis PR addresses two real issues (#246, #305) with solid overall design: the three-strategy source detection and the Issues[Bug]
|
| Scenario | Before | After |
|---|---|---|
| Flat-layout project (pandas-style) | FAIL (50) — false negative | PASS (100) ✓ |
| Test-only repo (opendatahub-tests) | FAIL (50) — false positive | NOT_APPLICABLE ✓ |
Project with pytest.ini, no detectable src |
FAIL (50) | NOT_APPLICABLE — possible false skip |
| Celery project assessment | PASS (100) | FAIL (50) — regression |
Verdict
Request changes on the pytest.ini/conftest.py test-only indicators and the celery blocklist entry before merging. The core design is sound and most changes are clear improvements.
Review generated by AgentReady code review skill
Fixes based on code review comment #3948171727: Bug fixes: - pytest.ini/conftest.py only indicate test-only repos when pyproject.toml is absent; mixed projects typically have pyproject.toml so these files alone are not reliable test-only indicators - Remove celery, middleware, alembic from blocklist since these are legitimate package names for their respective projects (Celery, etc.) Design improvement: - Strategy 3 (heuristic fallback) now returns type "heuristic" and evidence shows "— verify" suffix to flag that this is a best-guess match, not an exact name match from pyproject.toml Style cleanup: - Remove self-referential "PR ambient-code#322 feedback:" comments; replaced with direct rationale where still needed Added 3 new tests: - test_pytest_ini_with_pyproject_is_not_test_only - test_celery_directory_not_blocked - test_heuristic_match_shows_verify_in_evidence All 19 tests pass. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
AgentReady Code Review - PR #322SummaryThis PR addresses two real-world correctness bugs (#246, #305) in AgentReady Attribute Analysis
Security ReviewNo security issues found. The PR reads only local filesystem paths derived from the already-trusted Code QualityStrategy 3 gating comment is inaccurate. Strategy 3 executes inside the Untyped return value from The method returns a plain from typing import TypedDict
class SourceDirectoryResult(TypedDict):
found: bool
type: str
directory: strLatent fragility in
Test assertion is missing an explanatory comment. In
Common directories like Python version compatibility -- confirmed safe.
RecommendationsP0 -- Address before merge:
P1 -- Strong recommendations:
P2 -- Nice to have:
Score Impact EstimateThe Estimated impact: affected repositories could see a +5 to +10 point improvement in overall AgentReady score, depending on which other Tier 1 attributes were previously passing. This directly improves assessor correctness and reduces false negatives for real-world Python project layouts. Review generated by the AgentReady Development Agent. |
High Priority Fixes: - Add TypedDict (SourceDirectoryInfo) for _find_source_directory return type to provide type safety and prevent runtime key typos - Fix Strategy 3 scoping bug: heuristic fallback now runs whenever pyproject.toml exists, not just when a package name is found. This allows repos with pyproject.toml containing only [build-system] to still benefit from heuristic source directory detection. Medium Priority (Tests): - Add test for pyproject.toml without name field (only [build-system]) - Add test for project-named directory without __init__.py (namespace packages) verifying Strategy 2 falls through to Strategy 3 correctly Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add missing blank line after TypedDict class definition. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
@dgutride did you want to add any requirements for this PR ? This addresses some open issues on the |
kahowell
left a comment
There was a problem hiding this comment.
Change makes sense. Just a few suggestions.
| # These are generic pattern names that almost never serve as primary source. | ||
| # Avoid blocking package proper names (celery, alembic, etc.) which are | ||
| # legitimate source directories for their respective projects. | ||
| _NON_SOURCE_DIRS = frozenset( |
There was a problem hiding this comment.
This starts to feel like a http://github.com/github/gitignore situation...
Suggestions:
- Capture common conventions in a default files in their own files. (Start in this PR with a
Python.arsrc) - Provide a mechanism to override in a per-repo basis. (
.arsrc; defer to after this PR). - Implement gitignore syntax support (defer to after this PR).
There was a problem hiding this comment.
@kahowell I have fixed it in the latest commit. can you please give it a second look ?
Addresses PR ambient-code#322 review Comment 1: - Create Python.arsrc config file with gitignore-like format - Add _load_arsrc_file() with @lru_cache for efficient config loading - Add UserWarning when config file is missing (helps detect packaging issues) - Update pyproject.toml to include *.arsrc in package-data - Add 7 new tests covering config loading, parsing, and packaging The blocklist is now externalized following the reviewer's suggestion to adopt a github/gitignore-like pattern for managing language conventions. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove conflicting entries and standardize package data.
# 1.0.0 (2026-03-05) ### Bug Fixes * add bounded retry logic for LLM rate limit handling ([ambient-code#205](https://github.com/patrickstrick/agentready/issues/205)) ([6ecb786](6ecb786)), closes [ambient-code#104](https://github.com/patrickstrick/agentready/issues/104) * Add comprehensive subprocess security guardrails (fixes [ambient-code#57](https://github.com/patrickstrick/agentready/issues/57)) ([ambient-code#66](https://github.com/patrickstrick/agentready/issues/66)) ([454b80e](454b80e)) * Add comprehensive YAML validation to prevent attacks (fixes [ambient-code#56](https://github.com/patrickstrick/agentready/issues/56)) ([ambient-code#63](https://github.com/patrickstrick/agentready/issues/63)) ([31ecb3a](31ecb3a)) * add repository checkout step to Claude Code Action workflow ([17aa0cf](17aa0cf)) * add uv.lock to recognized lockfiles ([ambient-code#143](https://github.com/patrickstrick/agentready/issues/143)) ([a98dc87](a98dc87)), closes [ambient-code#137](https://github.com/patrickstrick/agentready/issues/137) * address P1 code quality issues from code review ([ambient-code#36](https://github.com/patrickstrick/agentready/issues/36)) ([5976332](5976332)) * address P1 code quality issues from code review ([ambient-code#37](https://github.com/patrickstrick/agentready/issues/37)) ([4be1d5e](4be1d5e)) * address P1 code quality issues from code review ([ambient-code#38](https://github.com/patrickstrick/agentready/issues/38)) ([77f2300](77f2300)) * **assessors:** FileSizeLimitsAssessor now respects .gitignore ([ambient-code#248](https://github.com/patrickstrick/agentready/issues/248)) ([eaaecc2](eaaecc2)), closes [ambient-code#245](https://github.com/patrickstrick/agentready/issues/245) * **assessors:** search recursively for OpenAPI specification files ([ambient-code#127](https://github.com/patrickstrick/agentready/issues/127)) ([e2a5778](e2a5778)) * **assessors:** support project-named directories and test-only repos in standard_layout check ([ambient-code#322](https://github.com/patrickstrick/agentready/issues/322)) ([2fbb733](2fbb733)), closes [ambient-code#246](https://github.com/patrickstrick/agentready/issues/246) [ambient-code#305](https://github.com/patrickstrick/agentready/issues/305) * Check for all official commitlint config file formats ([ambient-code#308](https://github.com/patrickstrick/agentready/issues/308)) ([50588cf](50588cf)) * **ci:** add permissions for leaderboard PR comment posting ([ambient-code#276](https://github.com/patrickstrick/agentready/issues/276)) ([33252e4](33252e4)) * **ci:** use gh pr view for fork PR number lookup in coverage comment ([ambient-code#253](https://github.com/patrickstrick/agentready/issues/253)) ([1688362](1688362)) * **cli:** check .pre-commit-config.yaml for conventional commit ([ambient-code#310](https://github.com/patrickstrick/agentready/issues/310)) ([61c44d9](61c44d9)) * **cli:** Honor excluded_attributes from config file ([ambient-code#306](https://github.com/patrickstrick/agentready/issues/306)) ([ffda546](ffda546)), closes [ambient-code#302](https://github.com/patrickstrick/agentready/issues/302) [ambient-code#302](https://github.com/patrickstrick/agentready/issues/302) * **cli:** Use removesuffix instead of rstrip for .git URL stripping ([ambient-code#292](https://github.com/patrickstrick/agentready/issues/292)) ([6bd08cf](6bd08cf)) * consider renovate for dependency_security check ([ambient-code#317](https://github.com/patrickstrick/agentready/issues/317)) ([35bfbbf](35bfbbf)) * correct Assessment field name in demo command ([ambient-code#41](https://github.com/patrickstrick/agentready/issues/41)) ([b48622d](b48622d)), closes [ambient-code#12](https://github.com/patrickstrick/agentready/issues/12) * Correct datetime import pattern in RepomixService ([ambient-code#65](https://github.com/patrickstrick/agentready/issues/65)) ([517aa6e](517aa6e)) * correct GitHub repository link in site navigation ([5492278](5492278)) * correct Liquid syntax in developer-guide (elif -> elsif) ([75f3b1d](75f3b1d)) * Correct pre-commit template path in PrecommitHooksFixer ([ambient-code#269](https://github.com/patrickstrick/agentready/issues/269)) ([c42a3c9](c42a3c9)) * Create shared test fixtures and fix Assessment schema issues ([ambient-code#114](https://github.com/patrickstrick/agentready/issues/114)) ([46baa13](46baa13)) * disable attestations for Test PyPI to avoid conflict ([ambient-code#155](https://github.com/patrickstrick/agentready/issues/155)) ([a33e3cd](a33e3cd)), closes [pypa/#action-pypi-publish](https://github.com/patrickstrick/agentready/issues/action-pypi-publish) * downgrade docker/metadata-action to v5 and fix shellcheck warnings ([12f5509](12f5509)) * enable Harbor task filtering for smoketest support ([ambient-code#222](https://github.com/patrickstrick/agentready/issues/222)) ([f780188](f780188)) * Enable workflow_dispatch for leaderboard update and regenerate data ([ambient-code#299](https://github.com/patrickstrick/agentready/issues/299)) ([091d9dd](091d9dd)), closes [ambient-code#298](https://github.com/patrickstrick/agentready/issues/298) * exclude DEPLOYMENT.md and SETUP_SUMMARY.md from Jekyll build ([9611207](9611207)) * Improve CLAUDE.md generation prompt and add prompt loading for future LLM integrations [ambient-code#283](https://github.com/patrickstrick/agentready/issues/283) ([ambient-code#284](https://github.com/patrickstrick/agentready/issues/284)) ([c0aeae4](c0aeae4)) * Improve report metadata display with clean table format ([ca361a4](ca361a4)) * leaderboard workflow and SSH URL support ([ambient-code#147](https://github.com/patrickstrick/agentready/issues/147)) ([de28cd0](de28cd0)) * make E2E test timeouts configurable and add sensitive directory test ([ambient-code#206](https://github.com/patrickstrick/agentready/issues/206)) ([27e87e5](27e87e5)), closes [ambient-code#104](https://github.com/patrickstrick/agentready/issues/104) [ambient-code#192](https://github.com/patrickstrick/agentready/issues/192) * **metadata:** use Windows-compatible strftime token for human timestamp ([ambient-code#291](https://github.com/patrickstrick/agentready/issues/291)) ([faf536d](faf536d)) * P0 security and logic bugs from code review ([2af2346](2af2346)) * Prevent API key exposure in environment and logs (fixes [ambient-code#55](https://github.com/patrickstrick/agentready/issues/55)) ([ambient-code#64](https://github.com/patrickstrick/agentready/issues/64)) ([4d1d001](4d1d001)) * Prevent command injection in CommandFix.apply() (fixes [ambient-code#52](https://github.com/patrickstrick/agentready/issues/52)) ([ambient-code#60](https://github.com/patrickstrick/agentready/issues/60)) ([49be28e](49be28e)) * Prevent path traversal in LLM cache (fixes [ambient-code#53](https://github.com/patrickstrick/agentready/issues/53)) ([ambient-code#61](https://github.com/patrickstrick/agentready/issues/61)) ([2bf052d](2bf052d)) * prevent unauthorized message for non-command comments ([ambient-code#262](https://github.com/patrickstrick/agentready/issues/262)) ([84c6f69](84c6f69)) * Prevent XSS in HTML reports (fixes [ambient-code#54](https://github.com/patrickstrick/agentready/issues/54)) ([ambient-code#62](https://github.com/patrickstrick/agentready/issues/62)) ([7c60c69](7c60c69)) * properly indent multi-line fix previews in align output ([ambient-code#289](https://github.com/patrickstrick/agentready/issues/289)) ([4e36cb5](4e36cb5)), closes [ambient-code#285](https://github.com/patrickstrick/agentready/issues/285) * remove incorrect dbasunag/opendatahub-tests submission ([ambient-code#321](https://github.com/patrickstrick/agentready/issues/321)) ([e6aecf8](e6aecf8)), closes [ambient-code#301](https://github.com/patrickstrick/agentready/issues/301) * rename research report in data directory ([b8ddfdc](b8ddfdc)) * replace all remaining elif with elsif in developer-guide ([73f16fc](73f16fc)) * Resolve 35 pytest failures through model validation and path sanitization improvements ([ambient-code#115](https://github.com/patrickstrick/agentready/issues/115)) ([4fbfee0](4fbfee0)) * resolve all broken links failing CI lychee check ([ambient-code#288](https://github.com/patrickstrick/agentready/issues/288)) ([4412c27](4412c27)) * resolve all test suite failures - achieve zero failures ([ambient-code#180](https://github.com/patrickstrick/agentready/issues/180)) ([990fa2d](990fa2d)), closes [ambient-code#148](https://github.com/patrickstrick/agentready/issues/148) [ambient-code#147](https://github.com/patrickstrick/agentready/issues/147) [ambient-code#145](https://github.com/patrickstrick/agentready/issues/145) * resolve broken links and workflow failures ([ambient-code#160](https://github.com/patrickstrick/agentready/issues/160)) ([fbf5cf7](fbf5cf7)) * Resolve merge conflicts in CLI main module ([ambient-code#59](https://github.com/patrickstrick/agentready/issues/59)) ([9e0bf2d](9e0bf2d)) * resolve YAML syntax error in continuous-learning workflow ([ambient-code#172](https://github.com/patrickstrick/agentready/issues/172)) ([3d40fcc](3d40fcc)) * resolve YAML syntax error in update-docs workflow and add actionlint ([ambient-code#173](https://github.com/patrickstrick/agentready/issues/173)) ([97b06af](97b06af)) * Sanitize sensitive data in HTML reports (fixes [ambient-code#58](https://github.com/patrickstrick/agentready/issues/58)) ([ambient-code#67](https://github.com/patrickstrick/agentready/issues/67)) ([6fbac76](6fbac76)) * schema backwards compat for attributes_skipped key ([ambient-code#277](https://github.com/patrickstrick/agentready/issues/277)) ([841bcc4](841bcc4)) * **schema:** allow assessments with excluded attributes ([ambient-code#312](https://github.com/patrickstrick/agentready/issues/312)) ([81b999f](81b999f)), closes [ambient-code#301](https://github.com/patrickstrick/agentready/issues/301) [ambient-code#309](https://github.com/patrickstrick/agentready/issues/309) * **security:** replace pull_request_target with pull_request trigger ([ambient-code#328](https://github.com/patrickstrick/agentready/issues/328)) ([3c5d31b](3c5d31b)), closes [ambient-code#324](https://github.com/patrickstrick/agentready/issues/324) * set correct baseurl for GitHub Pages subdirectory deployment ([c4db765](c4db765)) * skip PR comments for external forks to prevent permission errors ([ambient-code#163](https://github.com/patrickstrick/agentready/issues/163)) ([2a29fb8](2a29fb8)) * update --version flag to show correct version and research report date ([ambient-code#221](https://github.com/patrickstrick/agentready/issues/221)) ([5a85abb](5a85abb)) * Update Claude workflow to trigger on [@claude](https://github.com/claude) mentions ([ambient-code#35](https://github.com/patrickstrick/agentready/issues/35)) ([a8a3fab](a8a3fab)) * Use GitHub URL instead of local one ([ambient-code#297](https://github.com/patrickstrick/agentready/issues/297)) ([5abc7c2](5abc7c2)) * **workflows:** ensure post-comment step runs after Claude Code Action ([b087e5c](b087e5c)) * **workflows:** handle all event types in agentready-dev workflow ([9b942bf](9b942bf)) * **workflows:** improve error handling and logging for comment posting ([9ea1e6b](9ea1e6b)) * **workflows:** improve issue number extraction and add debug step ([ecd896b](ecd896b)) * **workflows:** remove if:always() to test step execution ([ff0bb12](ff0bb12)) * **workflows:** simplify post-comment step condition ([1bbf40a](1bbf40a)) ### Features * add agentready-dev Claude agent specification ([ambient-code#44](https://github.com/patrickstrick/agentready/issues/44)) ([0f61f5c](0f61f5c)) * add ambient-code/agentready to leaderboard ([ambient-code#148](https://github.com/patrickstrick/agentready/issues/148)) ([621152e](621152e)) * Add automated demo command for AgentReady ([ambient-code#24](https://github.com/patrickstrick/agentready/issues/24)) ([f4e89d9](f4e89d9)), closes [ambient-code#1](https://github.com/patrickstrick/agentready/issues/1) [ambient-code#25](https://github.com/patrickstrick/agentready/issues/25) [hi#quality](https://github.com/hi/issues/quality) [hi#scoring](https://github.com/hi/issues/scoring) * add Claude Code GitHub Action for [@claude](https://github.com/claude) mentions ([3e7224d](3e7224d)) * Add comprehensive unit tests for utility modules (privacy.py and subprocess_utils.py) ([ambient-code#111](https://github.com/patrickstrick/agentready/issues/111)) ([9d3dece](9d3dece)) * Add customizable HTML report themes with runtime switching ([ambient-code#46](https://github.com/patrickstrick/agentready/issues/46)) ([7eeaf84](7eeaf84)), closes [hi#contrast](https://github.com/hi/issues/contrast) [ambient-code#10](https://github.com/patrickstrick/agentready/issues/10) * add dbasunag/opendatahub-tests to leaderboard ([ambient-code#301](https://github.com/patrickstrick/agentready/issues/301)) ([be7a55f](be7a55f)) * add dgutride/odh-dashboard to leaderboard ([ambient-code#268](https://github.com/patrickstrick/agentready/issues/268)) ([f4911b2](f4911b2)) * Add Doubleagent - specialized AgentReady development agent ([ambient-code#30](https://github.com/patrickstrick/agentready/issues/30)) ([0ab54cb](0ab54cb)) * add feast-dev/feast to leaderboard ([ambient-code#293](https://github.com/patrickstrick/agentready/issues/293)) ([c894ce9](c894ce9)) * add GitHub organization scanning to assess-batch command ([ambient-code#118](https://github.com/patrickstrick/agentready/issues/118)) ([e306314](e306314)) * add Harbor Terminal-Bench comparison for agent effectiveness ([ambient-code#199](https://github.com/patrickstrick/agentready/issues/199)) ([a56e318](a56e318)) * Add Interactive Dashboard backlog item ([adfc4c8](adfc4c8)) * add interactive heatmap visualization for batch assessments ([ambient-code#136](https://github.com/patrickstrick/agentready/issues/136)) ([4d44fc3](4d44fc3)) * Add interactive HTML report generation ([18664ea](18664ea)) * add Memory MCP server allow list to repository settings ([ambient-code#203](https://github.com/patrickstrick/agentready/issues/203)) ([41d87bb](41d87bb)) * add opendatahub-io/opendatahub-tests to leaderboard ([ambient-code#314](https://github.com/patrickstrick/agentready/issues/314)) ([7a52466](7a52466)) * add quay/quay to leaderboard ([ambient-code#162](https://github.com/patrickstrick/agentready/issues/162)) ([d6e8df0](d6e8df0)) * add Red-Hat-AI-Innovation-Team/sdg_hub to leaderboard ([ambient-code#279](https://github.com/patrickstrick/agentready/issues/279)) ([5b71392](5b71392)) * add release pipeline coldstart prompt ([ambient-code#19](https://github.com/patrickstrick/agentready/issues/19)) ([9a3880c](9a3880c)), closes [ambient-code#18](https://github.com/patrickstrick/agentready/issues/18) * Add Repomix integration for AI-friendly repository context generation ([ambient-code#29](https://github.com/patrickstrick/agentready/issues/29)) ([92bdde1](92bdde1)), closes [ambient-code#24](https://github.com/patrickstrick/agentready/issues/24) [ambient-code#1](https://github.com/patrickstrick/agentready/issues/1) [ambient-code#25](https://github.com/patrickstrick/agentready/issues/25) [hi#quality](https://github.com/hi/issues/quality) [hi#scoring](https://github.com/hi/issues/scoring) * add report header with repository metadata ([ambient-code#28](https://github.com/patrickstrick/agentready/issues/28)) ([7a8b34a](7a8b34a)) * Add research report management CLI commands ([ambient-code#45](https://github.com/patrickstrick/agentready/issues/45)) ([e1be488](e1be488)), closes [ambient-code#7](https://github.com/patrickstrick/agentready/issues/7) * Add security & quality improvements from code review ([ambient-code#40](https://github.com/patrickstrick/agentready/issues/40)) ([13cd3ca](13cd3ca)) * Add security & quality improvements from code review ([ambient-code#49](https://github.com/patrickstrick/agentready/issues/49)) ([889d6ed](889d6ed)) * Add SWE-bench experiment system for validating AgentReady impact ([ambient-code#124](https://github.com/patrickstrick/agentready/issues/124)) ([15edbba](15edbba)) * Add weekly research update skill and automation ([ambient-code#145](https://github.com/patrickstrick/agentready/issues/145)) ([7ba17a6](7ba17a6)) * **assessors:** implement File Size Limits assessor (Tier 2) ([ambient-code#141](https://github.com/patrickstrick/agentready/issues/141)) ([248467f](248467f)) * **assessors:** support AGENTS.md and @ references in CLAUDEmdAssessor ([ambient-code#265](https://github.com/patrickstrick/agentready/issues/265)) ([450ec25](450ec25)), closes [ambient-code#244](https://github.com/patrickstrick/agentready/issues/244) * Auto-sync CLAUDE.md during semantic-release ([ambient-code#101](https://github.com/patrickstrick/agentready/issues/101)) ([36b48cb](36b48cb)) * automate PyPI publishing with trusted publishing (OIDC) ([ambient-code#154](https://github.com/patrickstrick/agentready/issues/154)) ([71f4632](71f4632)), closes [pypa/#action-pypi-publish](https://github.com/patrickstrick/agentready/issues/action-pypi-publish) * Batch Report Enhancements + Bootstrap Template Inheritance (Phase 2 Task 5) ([ambient-code#133](https://github.com/patrickstrick/agentready/issues/133)) ([7762b23](7762b23)) * centralize Claude instructions via AGENTS.md and add init redirect tests ([ambient-code#273](https://github.com/patrickstrick/agentready/issues/273)) ([92c8f3f](92c8f3f)) * Community Leaderboard for AgentReady Scores ([ambient-code#146](https://github.com/patrickstrick/agentready/issues/146)) ([fea0b3e](fea0b3e)) * Complete Phases 5-7 - Markdown reports, testing, and polish ([7659623](7659623)) * consolidate GitHub Actions workflows by purpose ([ambient-code#217](https://github.com/patrickstrick/agentready/issues/217)) ([717ca6b](717ca6b)), closes [ambient-code#221](https://github.com/patrickstrick/agentready/issues/221) * container support ([ambient-code#171](https://github.com/patrickstrick/agentready/issues/171)) ([c6874ea](c6874ea)) * convert AgentReady assessment to on-demand workflow ([ambient-code#213](https://github.com/patrickstrick/agentready/issues/213)) ([b5a1ce0](b5a1ce0)), closes [ambient-code#191](https://github.com/patrickstrick/agentready/issues/191) * enhance assessors with multi-language support and security ([ambient-code#200](https://github.com/patrickstrick/agentready/issues/200)) ([85712f2](85712f2)), closes [ambient-code#10](https://github.com/patrickstrick/agentready/issues/10) * Harbor framework integration for Terminal-Bench evaluations ([ambient-code#202](https://github.com/patrickstrick/agentready/issues/202)) ([d73a8c8](d73a8c8)), closes [ambient-code#4](https://github.com/patrickstrick/agentready/issues/4) [ambient-code#178](https://github.com/patrickstrick/agentready/issues/178) * Implement AgentReady MVP with scoring engine ([54a96cb](54a96cb)) * Implement align subcommand for automated remediation (Issue [ambient-code#14](https://github.com/patrickstrick/agentready/issues/14)) ([ambient-code#34](https://github.com/patrickstrick/agentready/issues/34)) ([06f04dc](06f04dc)) * Implement ArchitectureDecisionsAssessor (fixes [ambient-code#81](https://github.com/patrickstrick/agentready/issues/81)) ([ambient-code#89](https://github.com/patrickstrick/agentready/issues/89)) ([9e782e5](9e782e5)) * implement automated semantic release pipeline ([ambient-code#20](https://github.com/patrickstrick/agentready/issues/20)) ([b579235](b579235)) * implement bootstrap command for GitHub infrastructure ([0af06c4](0af06c4)), closes [ambient-code#2](https://github.com/patrickstrick/agentready/issues/2) * Implement BranchProtectionAssessor stub (fixes [ambient-code#86](https://github.com/patrickstrick/agentready/issues/86)) ([ambient-code#98](https://github.com/patrickstrick/agentready/issues/98)) ([44c4b17](44c4b17)) * Implement CICDPipelineVisibilityAssessor (fixes [ambient-code#85](https://github.com/patrickstrick/agentready/issues/85)) ([ambient-code#91](https://github.com/patrickstrick/agentready/issues/91)) ([e68285c](e68285c)) * Implement CodeSmellsAssessor stub (fixes [ambient-code#87](https://github.com/patrickstrick/agentready/issues/87)) ([ambient-code#99](https://github.com/patrickstrick/agentready/issues/99)) ([f06b2a8](f06b2a8)) * Implement ConciseDocumentationAssessor (fixes [ambient-code#76](https://github.com/patrickstrick/agentready/issues/76)) ([ambient-code#93](https://github.com/patrickstrick/agentready/issues/93)) ([c356cd5](c356cd5)) * Implement InlineDocumentationAssessor (fixes [ambient-code#77](https://github.com/patrickstrick/agentready/issues/77)) ([ambient-code#94](https://github.com/patrickstrick/agentready/issues/94)) ([e56e570](e56e570)) * Implement IssuePRTemplatesAssessor (fixes [ambient-code#84](https://github.com/patrickstrick/agentready/issues/84)) ([ambient-code#90](https://github.com/patrickstrick/agentready/issues/90)) ([819d7b7](819d7b7)) * Implement multi-repository batch assessment (Phase 1 of issue [ambient-code#68](https://github.com/patrickstrick/agentready/issues/68)) ([ambient-code#74](https://github.com/patrickstrick/agentready/issues/74)) ([befc0d5](befc0d5)) * Implement OneCommandSetupAssessor (fixes [ambient-code#75](https://github.com/patrickstrick/agentready/issues/75)) ([ambient-code#88](https://github.com/patrickstrick/agentready/issues/88)) ([668ba1b](668ba1b)) * Implement OpenAPISpecsAssessor (fixes [ambient-code#80](https://github.com/patrickstrick/agentready/issues/80)) ([ambient-code#97](https://github.com/patrickstrick/agentready/issues/97)) ([45ae36e](45ae36e)) * implement Phase 2 multi-repository assessment reporting ([ambient-code#117](https://github.com/patrickstrick/agentready/issues/117)) ([8da56c2](8da56c2)), closes [ambient-code#69](https://github.com/patrickstrick/agentready/issues/69) * implement report schema versioning ([ambient-code#43](https://github.com/patrickstrick/agentready/issues/43)) ([4c4752c](4c4752c)) * Implement SemanticNamingAssessor (fixes [ambient-code#82](https://github.com/patrickstrick/agentready/issues/82)) ([ambient-code#95](https://github.com/patrickstrick/agentready/issues/95)) ([d87a280](d87a280)) * Implement SeparationOfConcernsAssessor (fixes [ambient-code#78](https://github.com/patrickstrick/agentready/issues/78)) ([ambient-code#92](https://github.com/patrickstrick/agentready/issues/92)) ([99bfe28](99bfe28)) * Implement StructuredLoggingAssessor (fixes [ambient-code#79](https://github.com/patrickstrick/agentready/issues/79)) ([ambient-code#96](https://github.com/patrickstrick/agentready/issues/96)) ([2b87ca7](2b87ca7)) * integrate ACL file with Claude Code Action allowed_users ([ambient-code#261](https://github.com/patrickstrick/agentready/issues/261)) ([fe52489](fe52489)) * Phase 1 Task 1 - Consolidate Security Validation Patterns ([ambient-code#129](https://github.com/patrickstrick/agentready/issues/129)) ([8580c45](8580c45)), closes [ambient-code#122](https://github.com/patrickstrick/agentready/issues/122) [ambient-code#122](https://github.com/patrickstrick/agentready/issues/122) [ambient-code#122](https://github.com/patrickstrick/agentready/issues/122) * Phase 1 Tasks 2-3 - Consolidate Reporter Base & Assessor Factory ([ambient-code#131](https://github.com/patrickstrick/agentready/issues/131)) ([8e12bf9](8e12bf9)), closes [ambient-code#122](https://github.com/patrickstrick/agentready/issues/122) [ambient-code#122](https://github.com/patrickstrick/agentready/issues/122) [ambient-code#122](https://github.com/patrickstrick/agentready/issues/122) [ambient-code#122](https://github.com/patrickstrick/agentready/issues/122) * Phase 2 Task 4 - Replace manual config validation with Pydantic ([ambient-code#134](https://github.com/patrickstrick/agentready/issues/134)) ([d83cf58](d83cf58)) * Redesign homepage features with two-column layout and research links ([ambient-code#189](https://github.com/patrickstrick/agentready/issues/189)) ([570087d](570087d)), closes [ambient-code#187](https://github.com/patrickstrick/agentready/issues/187) * redesign HTML report with dark theme and larger fonts ([ambient-code#39](https://github.com/patrickstrick/agentready/issues/39)) ([59f6702](59f6702)), closes [#8b5cf6](https://github.com/patrickstrick/agentready/issues/8b5cf6) [#XX](https://github.com/patrickstrick/agentready/issues/XX) * Rename 'learn' command to 'extract-skills' for clarity ([ambient-code#125](https://github.com/patrickstrick/agentready/issues/125)) ([64d6563](64d6563)), closes [hi#scoring](https://github.com/hi/issues/scoring) [ambient-code#123](https://github.com/patrickstrick/agentready/issues/123) * replace markdown-link-check with lychee for link validation ([ambient-code#177](https://github.com/patrickstrick/agentready/issues/177)) ([f1a4545](f1a4545)) * Standardize on Python 3.12+ with forward compatibility for 3.13 ([ambient-code#132](https://github.com/patrickstrick/agentready/issues/132)) ([84f2c46](84f2c46)) * **submit:** add --gh flag for gh CLI-based submission ([ambient-code#278](https://github.com/patrickstrick/agentready/issues/278)) ([48bb624](48bb624)) * Terminal-Bench eval harness (MVP Phase 1) ([ambient-code#178](https://github.com/patrickstrick/agentready/issues/178)) ([d06bab4](d06bab4)), closes [ambient-code#171](https://github.com/patrickstrick/agentready/issues/171) * **workflows:** add comment posting for [@agentready-dev](https://github.com/agentready-dev) agent ([5dff614](5dff614)) ### Performance Improvements * implement lazy loading for heavy CLI commands ([ambient-code#151](https://github.com/patrickstrick/agentready/issues/151)) ([6a7cd4e](6a7cd4e)) ### BREAKING CHANGES * Users must update scripts from 'agentready learn' to 'agentready extract-skills'. All flags and options remain identical.
|
🎉 This PR is included in version 2.29.6 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
Summary
Enhances
StandardLayoutAssessorto recognize multiple valid Python project structures:pandas/pandas/) now passNOT_APPLICABLEinstead of failingRelated Issues
Root Cause
The original implementation hardcoded
src/as a required directory, following the research report's guidance for "src layout." However, this didn't account for:Changes
src/agentready/assessors/structure.py_NON_SOURCE_DIRSblocklist to exclude non-source directories from detection_find_source_directory()with three-strategy detection:src/(existing behavior)pyproject.tomlfor project name, look for matching directory__init__.pynot in blocklist_get_package_name_from_pyproject()supporting PEP 621 and Poetry formats_is_test_only_repository()to detect test repos by config files and naming_create_remediation()to provide context-aware guidancetests/unit/test_assessors_structure.pyAdded 11 new tests covering:
Testing
opendatahub-tests(test-only repo)mypackage/dirsrc/dir# All 16 tests pass uv run pytest tests/unit/test_assessors_structure.py -vBreaking Changes
None. Backward compatible:
src/layout continue to pass unchangedNOT_APPLICABLEChecklist
Co-Authored-By: Claude Opus 4.5 noreply@anthropic.com